package com.example.springboot.common.utils;
import org.jasypt.util.text.BasicTextEncryptor;
import org.springframework.stereotype.Component;


/**
 * Jasypt加密工具类，用于加密和解密字符串。
 * 使用Jasypt库的BasicTextEncryptor进行加密和解密操作。
 */
@Component
public final class JasyptEncryptorUtils {

    /**
     * 加密使用的盐值（实际上在这里作为密码使用）。
     */
    private static final String SALT = "fzz";

    /**
     * Jasypt的BasicTextEncryptor实例，用于加密和解密操作。
     */
    private static final BasicTextEncryptor basicTextEncryptor = new BasicTextEncryptor();

    /** 静态代码块，用于初始化BasicTextEncryptor并设置密码。 */
    static {
        basicTextEncryptor.setPassword(SALT); // 设置加密/解密的密码（盐值）
    }

    /**
     * 私有构造函数，防止外部实例化这个工具类。
     */
    private JasyptEncryptorUtils() {
    }

    /**
     * 明文加密方法。
     *
     * @param plaintext 需要加密的明文字符串。
     * @return 加密后的密文字符串。
     */
    public static String encode(String plaintext) {
        String ciphertext = basicTextEncryptor.encrypt(plaintext); // 使用BasicTextEncryptor加密明文
        return ciphertext; // 返回加密后的密文字符串
    }

    /**
     * 解密方法。
     *
     * @param ciphertext 需要解密的密文字符串。
     * @return 解密后的明文字符串。如果解密失败，则返回空字符串。
     */
    public static String decode(String ciphertext) {
        try {
            String plaintext = basicTextEncryptor.decrypt(ciphertext); // 使用BasicTextEncryptor解密
            return plaintext; // 返回解密后的明文
        } catch (Exception e) {
            System.err.println("解密失败: " + e.getMessage());
            return ""; // 返回空字符串表示解密失败。
        }
    }


    public static void main(String[] args) {
        System.out.println(encode("11"));
    }
}


